ECR の拡張スキャンでサポートされているプログラミング言語でも UNSUPPORTED_IMAGE が発生するときの対処方法
困っていた内容
ECR の拡張スキャン機能を使用して、コンテナイメージの脆弱性スキャンを実行しています。先日、Python のコンテナイメージを更新したところUNSUPPORTED_IMAGE
でスキャンが失敗しました。
AWS公式ドキュメントを確認しましたが、Python はサポートされており、他の Python のコンテナイメージは問題なくスキャン実行できています。
なぜサポートされているはずのコンテナイメージでUNSUPPORTED_IMAGE
が発生するのでしょうか?対処方法を教えてください。
どう対応すればいいの?
コンテナイメージのオペレーティングシステム(ベースイメージ)を確認してください。
ECR の拡張スキャンでは Python を含む複数のプログラミング言語をサポートしていますが、オペレーティングシステムもサポート対象である必要があります。そのため、サポートされているプログラミング言語のコンテナイメージでも、サポート対象外のオペレーティングシステムを使用している場合はUNSUPPORTED_IMAGE
が発生します。
現時点で拡張スキャンでサポートされているオペレーティングシステムは限定されており、すべてのオペレーティングシステムがサポートされているわけではないためご注意ください。
サポート対象外のオペレーティングシステムを利用している場合は、サポート対象のオペレーティングシステムへの変更をご検討ください。
なお、コンテナイメージのオペレーティングシステムはDockerfile
のFROM 行(ベースイメージの指定行)やコンテナを実行しコンテナ内の/etc/os-release
ファイルなどから確認できます。
やってみた
サポートされている Alpine Linux 3.15 と現時点でサポートされていない Alpine Linux 3.16 のコンテナイメージで、オペレーティングシステムの確認と、スキャンを実行してみます。
- Alpine Linux 3.15:python:3.11-rc-alpine3.15
- Alpine Linux 3.16:python:3.11-rc-alpine3.16
オペレーティングシステムの確認
Docker コマンドから各イメージを実行し、オペレーティングシステムとプログラミング言語を確認します。
$ docker run -it python:3.11-rc-alpine3.15 /bin/sh / # / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.15.4 PRETTY_NAME="Alpine Linux v3.15" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://bugs.alpinelinux.org/" / # / # python -V Python 3.11.0b3
$ docker run -it python:3.11-rc-alpine3.16 /bin/sh / # / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.16.0 PRETTY_NAME="Alpine Linux v3.16" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" / # / # python -V Python 3.11.0b3
スキャン結果の確認
上記コンテナイメージを拡張スキャンを設定した ECR にプッシュして、スキャンステータスを確認します。
python:3.11-rc-alpine3.15
のスキャン結果
python:3.11-rc-alpine3.16
のスキャン結果
同じプログラミング言語のコンテナイメージですが、オペレーティングシステムが異なるとUNSUPPORTED_IMAGE
が発生することが確認できました。
参考資料
Amazon ECR 拡張スキャンを有効にするときは、次の事項を考慮する必要があります。
Amazon Inspector では特定のオペレーティングシステムのスキャンがサポートされます。